package lu.med.praxiswahl.wahlumed.service.beans;

import java.util.Calendar;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import lu.med.praxiswahl.wahlumed.dao.beans.daointerface.EchoDAOInt;
import lu.med.praxiswahl.wahlumed.model.beans.BefundeTBL;
import lu.med.praxiswahl.wahlumed.model.beans.CustomerTBL;
import lu.med.praxiswahl.wahlumed.model.beans.EchoTBL;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.CtgServiceInt;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.CustomerServiceInt;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.EchoServiceInt;

/**
 * Session Bean implementation class BefundeService
 */
@Stateless
@Remote({ EchoServiceInt.class })
public class EchoService implements EchoServiceInt {

	@EJB
	private CustomerServiceInt cust;

	private EchoTBL tmpE;
	@EJB
	private EchoDAOInt eDao;

	/**
	 * Default constructor.
	 */
	public EchoService() {
		tmpE = new EchoTBL();
	}

	/**
	 * @see EchoServiceInt#create_E_Item(Calendar, String)
	 */
	public int create_E_Item(Calendar datum, String matricule,
			String bezeichner, String text) {

		EchoTBL tmpE = new EchoTBL();

		tmpE.setDatum(datum);
		tmpE.setCustomer(cust.getCustomer(matricule));
		tmpE.setBezeichner(bezeichner);
		tmpE.setText(text);

		eDao.persist(tmpE);

		return RET_OPERATION_DONE_PROPERLY;
	}

	@Override
	public EchoTBL[] getEByCustomer(String matricule) {
		Object[] tmp = eDao.retrieve_E_ItemsByCustomer(matricule).toArray();
		EchoTBL[] eintraege = new EchoTBL[tmp.length];

		for (int i = 0; i < tmp.length; i++) {
			eintraege[i] = (EchoTBL) tmp[i];
		}
		return eintraege;
	}

	/**
	 * @see CtgServiceInt#setBezeichner(String)
	 */
	public void setBezeichner(String bezeichner) {

		tmpE.setBezeichner(bezeichner);
		eDao.update(tmpE);
	}

	/**
	 * @see EchoServiceInt#getCustomer()
	 */
	public CustomerTBL getCustomer() {

		return tmpE.getCustomer();
	}

	/**
	 * @see EchoServiceInt#getA_EInstance(BefundeTBL)
	 */
	public void getA_EInstance(EchoTBL e) {

		tmpE = e;
	}

	/**
	 * @see EchoServiceInt#setText(String)
	 */
	public void setText(String text) {

		tmpE.setText(text);
		eDao.update(tmpE);
	}

	/**
	 * @see EchoServiceInt#setDatum(Calendar)
	 */
	public void setDatum(Calendar datum) {

		tmpE.setDatum(datum);
		eDao.update(tmpE);
	}

	/**
	 * @see EchoServiceInt#getBezeichner()
	 */
	public String getBezeichner() {
		return tmpE.getBezeichner();
	}

	/**
	 * @see EchoServiceInt#setCustomer(CustomerTBL)
	 */
	public void setCustomer(CustomerTBL customer) {
		tmpE.setCustomer(customer);
		eDao.update(tmpE);
	}

	/**
	 * @see EchoServiceInt#getText()
	 */
	public String getText() {
		return tmpE.getText();
	}

	/**
	 * @see EchoServiceInt#getDatum()
	 */
	public Calendar getDatum() {
		return tmpE.getDatum();
	}

	/**
	 * @see EchoServiceInt#getE_nummer()
	 */
	public Long getE_nummer() {
		return null;
	}

	@Override
	public int deleteEItem(Long id) {
		this.eDao.delete(id);
		return RET_OPERATION_DONE_PROPERLY;
	}

	public Long getSubPrimaryKeyIndex() {
		return this.eDao.findDatabaseSubPrimaryKeyIndex();
	}

	@Override
	public void update_date(Long id, Calendar datum) {
		EchoTBL tmpEcho_1 = this.eDao.retrieve_E_ItemByID(id);
		tmpEcho_1.setDatum(datum);
		this.eDao.update(tmpEcho_1);

	}

}
